
from django.urls import path
from . import views
from .classViews import ClassView
from . import middleware

app_name = 'book_app'  # 设置 app_name 属性

urlpatterns = [
    path('test/', views.book_test, name='test'),
    path('add/',views.add_view,name='add'),
    path('update/',views.update_view,name='update'),
    path('delete/',views.delete_view,name='delete'),
    path('foundation_query/',views.foundation_query,name='foundation_query'),
    path('filter_query/',views.filter_query,name='filter_query'),
    path('FQ_query/',views.FQ_query,name='FQ_query'),
    path('agg_order/',views.agg_order,name='agg_order'),
    path('relate_query/',views.relate_query,name='relate_query'),
    path('reverse_test/',views.reverse_test,name='reverse_test'),

#     传参地址  http://127.0.0.1:8000/booklist/18/188/
#总结：使用 path 函数，指定参数类型为 int   re_path() 函数效果一样，更能处理复杂的地址（包含特殊字符或者需要复杂的匹配）
# 使用 path 函数，这里的 <int:value1> 和 <int:value2> 会将匹配到的整数作为关键字参数传递给 views.positional_argument 视图函数；
    path('<int:value1>/<int:value2>/', views.positional_argument, name='positional_argument'),
# re_path() 函数效果：
    # 当使用无名分组（位置参数）时，视图函数接收参数要按位置顺序；
    # path(r'^(\d+)/(\d+)/$', views.positional_argument, name='positional_argument'),
    # 使用有名分组（关键字参数）时，视图函数接收参数要按关键字名称
    # path(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views.positional_argument, name='positional_argument'),

# 提取URL的查询字符串 http://127.0.0.1:8000/booklist/query?name="xxx"&age=1
    path('query',views.query_argument,name='query_argument'),

# 获取前端数据： http://127.0.0.1:8000/booklist/
#     path('',views.body_argument,name='body_argument'),
    path('data/',views.receive_data,name='receive_data'),

# 响应
    path('simple_reaponse/',views.simple_reaponse,name='simple_reaponse'),

# 类视图 http://127.0.0.1:8000/booklist/class_view/
    path('class_view/', ClassView.as_view(), name='class_view'),

# 中间件 middleware http://127.0.0.1:8000/booklist/middleware/
    path('middleware/', middleware.middleware_test, name='middleware'),
]